import java.util.*;
import java.io.*;
public class Radix{
private int[] data;
private double[] data2;
public Radix(int n){
Random r = new Random();
double r1;
data=new int[n];
for (int i=0;i<n;i++){
r1 = r.nextDouble();
data[i]=(int)(r1*1000);
}
data2=new double[n];
for (int i=0;i<n;i++){
r1 = r.nextDouble();
data2[i]=(r1*1000);
}
}
public String toString(){
String s=Arrays.toString(data);
return s;
}
public void sort(){
for (int n = 0; n < 3; n++){
ArrayList[] bucket = new ArrayList[10];
for (int i = 0; i < 10; i++)
bucket[i] = new ArrayList();
for(int i=0;i<data.length;i++){
int j=(int)(data[i]/( Math.pow(10, n)))%10;
bucket[j].add(data[i]);}
int place=0;
for (int i=0;i<10;i++){
for (int w=0;w<bucket[i].size();w++){
data[place]=(Integer)(bucket[i].get(w));
place=place+1;}}
}
}
public double[] bubblesort(){
int compare=0;
int swap=0;
for (int i=data2.length-1;i>=0;i--){
double[] b=data2.clone();
for (int n=0;n<i;n++){
compare+=1;
if (data2[n]>data2[n+1]){
swap+=1;
double[] q={data2[n]};
data2[n]=data2[n+1];
data2[n+1]=q[0];
}
}
if (Arrays.equals(b,data2)){
System.out.println(compare);
System.out.println(swap);
return data2;
}
}
System.out.println(compare);
System.out.println(swap);
return data2;
}
public double[] selectsort(){
int compare=0;
int swap=0;
for (int i=0; i<data2.length-1;i++){
for (int q=i+1;q<data2.length;q++){
compare++;
if (data2[i]>data2[q]){
swap++;
double a=data2[i];
data2[i]=data2[q];
data2[q]=a;
}
}
}
System.out.println(compare);
System.out.println(swap);
return data2;
}
public double[] insertsort(){
int compare=0;
int swap=0;
for (int i=1;i<data2.length;i++){
boolean keepgoing=true;
for (int q=i;keepgoing && q>0;q--){
compare++;
keepgoing=false;
if(data2[q]<data2[q-1]){
swap++;
double a=data2[q];
data2[q]=data2[q-1];
data2[q-1]=a;
keepgoing=true;
}
}
}
System.out.println(compare);
System.out.println(swap);
return data2;
}
public static void main(String[] args){
Radix a = new Radix(10);
System.out.println(Arrays.toString(a.data2));
System.out.println(Arrays.toString(a.bubblesort()));
}
}